スナップショットを使用してRDSをMySQLからAuroraへ移行する
ウィスキー、シガー、パイプをこよなく愛する大栗です。 最近、既存のRDS on MySQLからAuroraへ移行したいと考えているという話をよく伺います。Auroraには既存のRDS on MySQLからAuroraへデータ移行ができる仕組みがあるのでご紹介します。
2014年12月22日の時点でAuroraはLimited Previewです。本番環境での使用は控える方が良いと思われます。
MySQLでスナップショットを取得する
まずMySQL側でスナップショットを取得する必要があります。そのスナップショットには以下の要件があります。
- 取得元のMySQLは5.6である。
- ストレージエンジンはInnoDBである。
- innodb_file_per_tableが無効である。
※:RDSのスナップショット取得は、1つのAWSアカウント当り同時に1つしか実行できません。
Aurora側でスナップショットを取り込む
スナップショットの取り込みはAurora側のManagement Consoleで"Import Snapshot into Aurora Preview"をクリックします。
MySQL 5.6のスナップショットの一覧からAuroraへ移行するスナップショットを選択します。
Aurora側のスナップショットの一覧に表示されます。しかし、"DB Engine"はmysqlとなっています。 対象のスナップショットを選択して"Migrate Database"
普通のRDSでスナップショットをリストアする時と同様に入力をします。既存RDSと異なり"License Model"、"Multi-AZ Deployment"、"Storage Type"の項目はありません。
スナップショットの移行を行うと、以下の4ステップで行われます。DBクラスタの作成後にデータ移行の準備、実際のデータ移行を行うため移行時間がかかります。
- Create DB Cluster
- Prepare data for migration
- Migrate data to DB Cluster
- Complete DB Instance creation
移行が完了すると通常のAuroraインスタンスとして利用可能になります。
さいごに
スナップショットの移行は簡単な手順で実施することが可能です。しかし、データ欠損無しで移行するためにはRDSの書き込み停止後にスナップショットを取得してから移行完了までサービスを停止する必要があります。サービスの停止時間を短くするためには他の方法も検討すべきでしょう。 他にMySQLからAuroraへ移行する方法は、mysqldumpを使用する方法や既存MySQLからレプリケーションする方法もあるようです。 次は既存MySQLからの移行方法を比較したいと思います。